from goods.models import GoodsCategory, GoodsChannel
from contents.models import ContentCategory, Content


def get_channels():
    # 1.1查询分类：频道中包含的一级分类，及二级分类，二级分类中包含的三级分类
    '''
    categories={
        频道编号:{
            '一级分类':[一级分类对象转字典,...],
            '二级分类':[二级分类对象,...]
        }
    }
    '''
    categories = {}
    # 查询所有的频道信息，包含一级分类外键
    channels = GoodsChannel.objects.order_by('group_id').order_by('sequence')
    for channel in channels:
        # 判断当前数据中是否已经存在此频道，如果不存在则添加此频道
        if channel.group_id not in categories:
            # 向字典中添加此频道
            categories[channel.group_id] = {
                'channels': [],
                'sub_cats': []
            }
        # 向此频道中添加一级分类
        categories[channel.group_id]['channels'].append({
            'url': channel.url,
            'name': channel.category.name
        })
        # 根据一级分类获取二级分类，遍历添加
        for sub2 in channel.category.subs.all():
            # 向二级分类对象添加三级分类
            sub2.sub_cats = sub2.subs.all()
            # 向此频道中添加二级分类
            categories[channel.group_id]['sub_cats'].append(sub2)

    return categories
